package entities;

import java.sql.Date;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;

import org.hibernate.annotations.LazyCollection;
import org.hibernate.annotations.LazyCollectionOption;

@Entity
@Table(name = "OrdenesCompra")
public class OrdenDeCompra extends EntidadBase {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	@Id
	@Column(name = "idOrdenCompra")
	@GeneratedValue(strategy = GenerationType.AUTO)
	private int nroOrden;
	private float monto;
	private int volumen;
	private Date fechaCompra;
	private boolean pendiente;
	
	@ManyToOne
	@JoinColumn(name= "idProveedor") 
	private Proveedor provedoor;
	
	@OneToOne
	@JoinColumn (name = "idDescuento")
	private DescuentoProveedor descProv;
	
	@OneToOne
	@JoinColumn (name ="idOrdenCompra")
	private CondicionCompra condCompra;
	
	@OneToMany (cascade = CascadeType.ALL)
	@LazyCollection(LazyCollectionOption.FALSE)
	@JoinColumn (name ="idOrdenCompra")
	private List<ItemOrdenDeCompra> items;

	public OrdenDeCompra() {
		items = new ArrayList<ItemOrdenDeCompra>();
		pendiente = true;
	}

	public int getNroOrden() {
		return nroOrden;
	}

	public void setNroOrden(int nroOrden) {
		this.nroOrden = nroOrden;
	}

	public float getMonto() {
		return monto;
	}

	public void setMonto(float monto) {
		this.monto = monto;
	}

	public int getVolumen() {
		return volumen;
	}

	public void setVolumen(int volumen) {
		this.volumen = volumen;
	}

	public Date getFechaCompra() {
		return fechaCompra;
	}

	public void setFechaCompra(Date fechaCompra) {
		this.fechaCompra = fechaCompra;
	}

	public DescuentoProveedor getDescProv() {
		return descProv;
	}

	public void setDescProv(DescuentoProveedor descProv) {
		this.descProv = descProv;
	}

	public CondicionCompra getCondCompra() {
		return condCompra;
	}

	public void setCondCompra(CondicionCompra condCompra) {
		this.condCompra = condCompra;
	}

	public List<ItemOrdenDeCompra> getItems() {
		return items;
	}

	public void setItems(List<ItemOrdenDeCompra> items) {
		this.items = items;
	}

	public Proveedor getProvedoor() {
		return provedoor;
	}

	public void setProvedoor(Proveedor provedoor) {
		this.provedoor = provedoor;
	}

	public boolean isPendiente() {
		return pendiente;
	}

	public void setPendiente(boolean pendiente) {
		this.pendiente = pendiente;
	}
	
	
}
